using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ItemDrop : MonoBehaviour
{
    [SerializeField] private int possibleItemDrop; // 可能掉落的物品数量
    [SerializeField] private ItemData[] possibleDrop; // 可能掉落的物品数据数组
    private List<ItemData> dropList = new List<ItemData>(); // 掉落物品列表

    [SerializeField] private GameObject dropPrefab; // 掉落物品的预制体


    // 掉落物品的方法
    protected void DropItem(ItemData _itemData)
    {
        // 实例化一个新的掉落物品
        GameObject newDrop = Instantiate(dropPrefab, transform.position, Quaternion.identity);

        // 生成一个随机的速度向量
        Vector2 randomVelocity = new Vector2(Random.Range(-5, 5), Random.Range(15, 20));

        // 设置新掉落物品的数据和速度
        newDrop.GetComponent<ItemObject>().SetupItem(_itemData, randomVelocity);
    }

    // 生成掉落物品的方法
    public virtual void GenerateDrop()
    {
        // 遍历可能掉落的物品数据数组
        for (int i = 0; i < possibleDrop.Length; i++)
        {
            // 根据掉落几率决定是否添加到掉落列表
            if (Random.Range(0, 100) <= possibleDrop[i].dropChance)
            {
                dropList.Add(possibleDrop[i]);
            }
        }

        // 遍历掉落列表
        for (int i = 0; i < possibleItemDrop; i++)
        {
            if (i >= dropList.Count) break;// 有可能掉落数大于掉落列表//return
            // 随机选择一个物品
            ItemData randomItem = dropList[Random.Range(0, dropList.Count - 1)];
            // 从掉落列表中移除该物品
            dropList.Remove(randomItem);
            // 掉落该物品
            DropItem(randomItem);
        }
    }
}